/**
 * @file
 * @author  Tsin Smith <tsin.creator@gmail.com>
 *
 * @section DESCRIPTION
 *
 */

#ifndef __TSIN_LIBRARY_GAMEVIEWPORT_HPP__
#define __TSIN_LIBRARY_GAMEVIEWPORT_HPP__

namespace tsin {

        /**
         * @class GameViewport
         * @brief The most abstract interface for view ports.
         *
         * A view port is the container of all per-frame-update contents such
         * as backgrounds and bullets. Each view port has its own reference
         * frame with the origin at the center, x coord covers x() - width() and
         * y coord covers y() - height().
         *
         * @see Display
         */
        class GameViewport
        {
        public:
                /**
                 * Get the x coord in the overall reference frame of the
                 * top-left corner.
                 */
                virtual float x() = 0;

                /**
                 * Get the y coord in the overall reference frame of the
                 * top-left corner.
                 */
                virtual float y() = 0;

                /**
                 * Get the width in the overall reference frame of the port.
                 */
                virtual float width() = 0;

                /**
                 * Get the height in the overall reference frame of the port.
                 */
                virtual float height() = 0;
        };

}

#endif /* __TSIN_LIBRARY_GAMEVIEWPORT_HPP__ */
